Computer networks have become commonplace and taken many forms, from cellular data networks for smart phones to localized networks such as a Wi-Fi network and the familiar Ethernet connections commonly used to provide hard-wired connection to the Internet. Networks such as these enable users to share resources and data, such as to surf the World Wide Web for information, to send email, or to view a streaming movie.
Information is communicated over the Internet using packet switching technology, in which information is broken up into packets of data that are routed from a source to a destination, based on an Internet Protocol (IP) address. Routers and other machines in the network use a routing protocol to ensure that data makes it from the source machine to the intended destination, which is then able to reassemble the packets to form the original information sent, such as an email, a movie, or a web page.
For example, a user wishing to conduct online banking may open a browser window, such as Internet Explorer or another suitable browser, and enter a Uniform Resource Locator (URL) for the bank's website. The web page request is sent to the bank's servers via the Internet, and web page data for the bank's home page is provided in response. The user can then log in to the website, establishing a secure or encrypted connection between the user and the bank's servers so that confidential banking can be conducted without routers or other machines between the bank and the user being able to read the packets of data exchanged.
But, it is unlikely that the bank's server is a single computer system located at the bank, due to the varying and sizable demands of serving many customers and providing many services at one time. Most businesses therefore rely on a data center that specializes in providing networked data services to host their websites and other data systems, enabling the data center to better serve clients by providing varying resources to meet changing user demands.
This is achieved in many instances by using virtual servers, which in many examples are multiple instances of server software running on the same computer system or what appears to be a single instance of a server distributed across many computer systems. Small customers or services can therefore be combined and run using different virtual servers on the same computer, while large services such as popular web pages can be distributed across many different computer systems.
Network services often are implemented as several layers of application software, such as a web page front end that provides an interface to a user, business logic that handles information exchange between the web interface provided to the user and a database, and databases or other repositories of information. In this implementation, a single information request from a user may trigger multiple requests between the different layers of application software. The identity of the user initiating the request is often lost during this process. The loss of identification of the requesting user makes it difficult to track or audit database access.